(defun createTest (keys correlations numberTests filename)
  "Going to create a test using the keys and the information based off of the correlation on keys
given the value and given's
    @keys: (value*)
    @correlations: [function (a b)]
    @numberTests: [naturalNumber]
    @filename: [string]
"
  (with-open-file (stream filename :direction :output :if-exists :supersede)
    (format stream "(")
    (dotimes (blah numberTests)
      (let ((keysSofar))
	(format stream "(")
	(loop for key in keys do
	     (let ((value (funcall correlations key keysSoFar)))
	       (format stream "(~a ~a)"			      
		       key 
		       value)
	       (setq keysSoFar (cons (list key value)
				     keysSoFar))))
	(format stream ")" )))
    (format stream ")" )))
(defun noCorr (keyA givenB)
  "This one won't care what givenB is, the probability is 50/50"
  (zerop (random 2)))
(defun pastCorr (keyA givenB pastValue relationTotal &optional (oCorr #'noCorr))
  (if (equal keyA pastValue)
      (let ((total 0)
	    (totalGood 0))
	(loop for prev in givenB do
	     (if (cadr prev) (setq totalGood (+ totalGood 1)))
	     (setq total (+ total 1)))
	(if (> (/ totalGood
		  total)
	       relationTotal)
	    T
	    nil))
      (funcall oCorr keyA givenB)))
